-
Notifications
You must be signed in to change notification settings - Fork 1
Integrate the RCAC computational pilot and separate physical from computational #111
Merged
Navid Gholizadeh (ngholiza)
merged 19 commits into
dev
from
feature/computational-integration
Oct 9, 2026
Merged
Integrate the RCAC computational pilot and separate physical from computational #111
Navid Gholizadeh (ngholiza)
merged 19 commits into
dev
from
feature/computational-integration
Oct 9, 2026
+20,709
−1,279
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Brings the isolated pilot's uncommitted work onto a branch: per-run resource requests (submit_v2 gateway protocol), ElasticDFT failure diagnostics and backfill, the run-values fixes, the computational FAQ and help pages, and the pilot provisioning and validation scripts. Review transcripts, deployment dumps and evidence folders stay local. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QS1dbWTNbwqxXZUMEARjhm
Resolves the pilot against dev's database roles, migration runner, proposal job queue and template editing: - Computation store uses the api_worker role (not the superuser) and keeps its project-access checks; migrations create the computation tables unconditionally and add api_worker policies for them. - The proposal job runner resolves objectives and domain from the claimed run, as the pilot's initial generation did. - The run form keeps the pilot's typed run values and computational redirects, plus dev's edit-in-place and idempotency key. - dev's "at least one planned value" check stays removed: an all-variable optimization run takes no point values, and the definition decides which inputs are required. - Restores three pilot tests that test_*.py in .gitignore had hidden. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QS1dbWTNbwqxXZUMEARjhm
Computational tools shared the catalog tables with lab instruments and were recognized only by conventions. Make the split explicit: - equipment_metadata.asset_kind (physical | computational), backfilled for the registered RCAC installations. - experiment_types.execution_kind, set by a trigger from the template's equipment, so forks of a computational template stay computational whichever path creates them. - all_runs view: every run with run_kind, under each table's RLS. - The generic run endpoint refuses computational equipment; the classifier prefers execution_kind over the id prefix. - Equipment list shows Physical equipment and Computational tools separately; the template library badges each template's kind. - The example RCAC worker manifest uses the api_worker role. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QS1dbWTNbwqxXZUMEARjhm
- Cache hits reuse the run that executed, never another reuse, so artifact lineage stays one hop after repeated identical submissions. - An explicitly physical template is never treated as computational, user-created template ids never take the reserved computation_ prefix, and the run endpoint rejects by equipment kind instead of guessing from the id. - JSON object and array choices are compared as parsed JSON, not as Python's str() of a dict or list. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QS1dbWTNbwqxXZUMEARjhm
- The browser honours an explicitly physical template: the shared classifier returns non-computational for execution_kind "physical", and the run wizard only pre-blocks a catalog id naming a known tool until the template itself has loaded. - JSON choices compare by value, so 50 matches 50.0 while true still does not match 1. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QS1dbWTNbwqxXZUMEARjhm
Converting to float made distinct large integers (above 2**53) equal and could overflow; Python's own int/float comparison is exact. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QS1dbWTNbwqxXZUMEARjhm
This was referenced Oct 9, 2026
Sign in
to join this conversation on GitHub.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Brings the isolated RCAC computational pilot (Quantum ESPRESSO on Negishi and Gautschi through Globus Compute and Slurm) into
dev, and makes physical vs computational explicit in the database and the UI. Rushik and Justin tested the pilot and found it smooth.The computation feature stays off until
RCAC_COMPUTE_ENABLED=trueis set; the computation tables are created empty either way.What changes
submit_v2), ElasticDFT failure diagnostics, typed run values, and the computational help pages.api_worker(not the table owner) and keep their own project-access checks.add_row_level_security.sqlgrantsapi_workerpolicies on the three computation tables.equipment_metadata.asset_kind,experiment_types.execution_kind(set by a trigger from the template's equipment, so forks keep their kind), and anall_runsview withrun_kindunder each table's RLS. Applied once by checksum indb_migrations.computation_prefix.Merge decisions
test_project_run_requires_planned_parameter_valueswas removed; the pilot's run-value tests cover these rules.test_*.pyin.gitignorewere force-added.Review and tests
Rollout
Run the
dt-db-migrateJob with this image before rolling outdt-api. A computation worker needsPG_WORKER_USER/PG_WORKER_PASS(seegeddes/k8s/09-rcac-worker.example.yaml).🤖 Generated with Claude Code